home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 50
/
Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso
/
Aminet
/
text
/
edit
/
tecoc-146.lha
/
exed.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-07-05
|
2KB
|
67 lines
/*****************************************************************************
ExeD()
This function executes a D command.
nD Delete n characters.
m,nD Delete between m and n
*****************************************************************************/
#include "zport.h" /* define portability identifiers */
#include "tecoc.h" /* define general identifiers */
#include "defext.h" /* define external global variables */
#include "deferr.h" /* define identifiers for error messages */
DEFAULT ExeD() /* execute a D command */
{
LONG Status;
DBGFEN(1,"ExeD",NULL);
if (CmdMod & MARGIS) { /* if it's m,nD */
DBGFEX(1,DbgFNm,"ExeK()");
return ExeK();
}
if (EStTop == EStBot) { /* if no numeric argument */
NArgmt = 1; /* default is 1D */
} else {
UMinus(); /* if it's -D, make it -1D */
if (GetNmA() == FAILURE) { /* get numeric argument */
DBGFEX(1,DbgFNm,"FAILURE");
return FAILURE;
}
}
Status = -1; /* -1 means success */
if (NArgmt > 0) {
if ((GapEnd+NArgmt) > EBfEnd) { /* if out of range */
Status = 0; /* 0 means failure */
} else {
GapEnd += NArgmt; /* delete */
}
} else {
if ((GapBeg+NArgmt) < EBfBeg) { /* if out of range */
Status = 0; /* 0 means failure */
} else {
GapBeg += NArgmt; /* delete */
}
}
if (CmdMod & COLON) { /* if it's :D */
CmdMod = '\0'; /* clear modifiers flags */
DBGFEX(1,DbgFNm,"PushEx()");
return PushEx(Status, OPERAND);
}
if (Status == 0) {
ErrMsg(ERR_DTB); /* DTB = "delete too big" */
DBGFEX(1,DbgFNm,"FAILURE");
return FAILURE;
}
CmdMod = '\0'; /* clear modifiers flags */
DBGFEX(1,DbgFNm,"SUCCESS");
return SUCCESS;
}